package cn.zhouchao.mynode;

import cn.zhouchao.basic.util.PageList;
import cn.zhouchao.org.domain.Shop;
import cn.zhouchao.org.domain.ShopAuditLog;
import cn.zhouchao.org.mapper.ShopAuditLogMapper;
import cn.zhouchao.org.mapper.ShopMapper;
import cn.zhouchao.org.query.ShopQuery;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Sanjiao {

//    @Autowired
//    private ShopMapper shopMapper;
//
//    @Autowired
//    private ShopAuditLogMapper shopAuditLogMapper;
//
////    @Override
//    public PageList<Shop> queryByPage(ShopQuery query) {
//        Integer totals = shopMapper.queryByCount(query);
//        if (0 >= totals) {
//            return new PageList<>(0, new ArrayList<>());
//        }
//
//        List<Shop> rows = shopMapper.queryByPage(query);
//        // rows是当前页店铺数据 我们现在想将日志数据 添加到店铺对象的 auditLogs 字段里面
//        // 他们两个的映射关系 店铺的id 和 日志里面的shopIdi相对应
//        // 店铺的id 在rows里面
//        List<Long> shopIds = new ArrayList<>();
//
//        for (Shop sh:rows){
//            shopIds.add(sh.getId());
//        }
//        // 根据shop的id 去查询所有的日志
//
//        List<ShopAuditLog> logs = shopAuditLogMapper.findByShopId(shopIds);
//        // 把他们两个关系拼接上  map 的key：shopId value ：日志的集合
//        Map<Long,List<ShopAuditLog>> logMap = new HashMap<>();
//        // 这个map是为了去除双重for循环
//        for (ShopAuditLog log : logs) {
//            // 先去获取一次
//            List<ShopAuditLog> shopAuditLogs = logMap.get(log.getShopId());
//            // 如果集合是空的 我们需要自己new一个 不然会报空指针
//            if (CollectionUtils.isEmpty(shopAuditLogs)){
//                shopAuditLogs = new ArrayList<>();
//            }
//            shopAuditLogs.add(log);
//            logMap.put(log.getShopId(),shopAuditLogs);
//        }
//
//        for (Shop sh : rows) {
//            List<ShopAuditLog> shopAuditLogs = logMap.get(sh.getId());
//            sh.setShopAuditLogs(shopAuditLogs);
//        }
//
//        return new PageList<Shop>(totals, rows);
//    }
}
